<?php
/**
 * Created by PhpStorm.
 * User: trnall
 * Date: 2020/9/4
 * Time: 11:50
 */

namespace app\common\library;


use think\Exception;

class Image
{
    /**
     * 合并两张图片，可添加文字
     * @param array $text 要写的文字及文字的一些属性
     * @param string $srcImg 要操作的图片
     * @param array $copyImageConfig 合并图片的一些属性
     * @param null $dir 生成图片目录
     * @param null $target 背景图片
     * @param bool $isDelImg 是否删除服务器图片 默认删除
     * @return bool|string  成功返回图片OSS路径，失败返回false
     */
    public static function setShareBackgroundImage(array $text = [], $srcImg = '', array $copyImageConfig = [], $target = null, $dir = null, $isDelImg = false)
    {
        $res = (new static)->_setShareBackgroundImage($text, $srcImg, $copyImageConfig, $target, $dir);
        if ($isDelImg) {
            delete_image($srcImg);//操作图
//            delete_image($target);//背景图
            delete_image($res);//返回的服务器图片
        }
        return $res;
    }


    /**
     * @param array $text 要写的文字及文字的一些属性
     * @param string $srcImg 要操作的图片
     * @param array $copyImageConfig 合并图片的一些属性
     * @param null $dir 生成图片目录
     * @param null $target 背景图片
     * @return bool|string 成功返回图片OSS路径，失败返回false
     */
    private function _setShareBackgroundImage(array $text = [], $srcImg = '', array $copyImageConfig = [], $target = null, $dir = null)
    {
        if (!$srcImg || !$target) return false;
        $dir = $dir ?? '/uploads/share/';    //生成的图片目录
        // $target = $target ?? './imgs/share/share1.jpg';//背景图片

        $copyImageConfig['dstX'] = $copyImageConfig['dstX'] ?? 200;
        $copyImageConfig['dstY'] = $copyImageConfig['dstY'] ?? 100;
        $copyImageConfig['srcX'] = $copyImageConfig['srcX'] ?? 0;
        $copyImageConfig['srcY'] = $copyImageConfig['srcY'] ?? 0;

        $defaultSize = 30;//默认字体大小
        $defaultAngle = 0;//默认角度
        $defaultX = 0;
        $defaultY = 0;
        $defaultColor = [220, 20, 60];
        $defaultFontFile = ROOT_PATH.'public/assets/fonts/msyh.ttf';
        $defaultWidth = 670;
        $defaultLine = 1;
        $defaultLineHeight = 50;

        // try {
            $goodsThumbImage = $srcImg;
            $srcImgSource = getImageCreate($goodsThumbImage);
            $targetImg = getImageCreate($target);
            $srcImgSize = getimagesize($goodsThumbImage);
            //合并图片
            imagecopy($targetImg, $srcImgSource, $copyImageConfig['dstX'], $copyImageConfig['dstY'], $copyImageConfig['srcX'], $copyImageConfig['srcY'], $srcImgSize[0], $srcImgSize[1]);
            //写文字
            $v = $text;
            // foreach ($text as $v) {
                $targetImg = writeText2Image($targetImg, $v['size'] ?? $defaultSize, $v['angle'] ?? $defaultAngle, $v['x'] ?? $defaultX, $v['y'] ?? $defaultY, $v['color'] ?? $defaultColor, $v['font_file'] ?? $defaultFontFile, $v['text'], $v['width'] ?? $defaultWidth, $v['line'] ?? $defaultLine, $v['line_height'] ?? $defaultLineHeight);
            // }
            //图片路径
            $path = $dir . date("Ymd", time()) . '/';
            if (!file_exists('.' . $path))
                mkdir('.' . $path, 0775, true);
            $imagePath = $path . 'code' . time() . mt_rand(1000, 9999) . '.jpg';
            //生成图片
            Imagejpeg($targetImg, '.' . $imagePath);
            $imgUrl = $imagePath;
            if ($imgUrl && file_exists('.' . $imgUrl) && in_array(getImageExt('.' . $imgUrl), ['jpg', 'png', 'jpeg'])) {
//                $res = AliOss::server2oss($imagePath);//上传图片到oss
//                if ($imgUrl && $res['code'] == 200) {
                return $imgUrl;
//                }
            }
        // } catch (\Exception $e) {
        //     var_dump($e->getMessage());exit;
        //     return false;
        // }
        return false;
    }
}